﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using System.Threading;
using Dominio;
using Persistencia;


namespace Host
{
    class Program
    {
        static void Main(string[] args)
        {
            FPersistencia persistencia = new FPersistencia();
            OPersistente.SetearPersistencia(persistencia);
            persistencia.Conectarse(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\..\..\Resources\DisenioII.mdb;User Id=Admin;Password=");

            Sistema.GetInstance().CargarSistema();

            Thread hilo1 = new Thread(new ThreadStart(publicarCorreo));
            Thread hilo2 = new Thread(new ThreadStart(publicarAdministrador));
            hilo1.Start();
            hilo2.Start();

            if (!hilo1.IsAlive && !hilo2.IsAlive)
            {
                persistencia.Descontectarse();
            }            
        }

        private static void publicarCorreo()
        {
            //El tipo que quiero publicar en el servidor
            Type tipoCorreo = typeof(Servicios.ICorreoImpl);
            Type tipoAdmin = typeof(Servicios.IAdministradorImpl);

            //Publico en el ServiceHost el tipo que obtuve de los web services
            using(ServiceHost host = new ServiceHost(tipoCorreo))
            {
                host.Open();

                Console.WriteLine("El correo de usuarios esta disponible...");
                Console.ReadKey();

                host.Close();
            }
        }
        private static void publicarAdministrador()
        {
            //El tipo que quiero publicar en el servidor
            Type tipo = typeof(Servicios.IAdministradorImpl);

            //Publico en el ServiceHost el tipo que obtuve de los web services
            using (ServiceHost host = new ServiceHost(tipo))
            {
                host.Open();

                Console.WriteLine("El administrador esta disponible...");
                Console.ReadKey();

                host.Close();
            }
        }
    }
}
